
/**
 * get封装
 * @param {String} url 请求地址
 * @param {Object} params  请求参数
 * @param {Object} headers  请求头
 * @param {String} dataType  获取后端的数据类型
 * @returns Promise Promise对象中有两个数据  resolve reject
 */
 function get(url, params, headers = {}, dataType) {

    const p= new Promise((resolve, reject) => {
        // 一.创建xhr对象
        const xhr = new XMLHttpRequest
        // 二.监控数据状态
        xhr.onreadystatechange = () => {
            // 判断是否获取后端数据
            if (xhr.readyState === 4) {
                // 判断数据状态
                if (xhr.status === 200) {
                    //获取数据
                    let res = xhr.responseText
                    console.log(res);
                    // 判断数据类型
                    if (dataType === 'json') res = JSON.parse(res)
                    resolve(res)
                } else {
                    reject(xhr.status)
                }
            }
        }
        // 遍历请求参数
        let temp=[]
        for(let key in params){
            temp.push(`${key}=${params[key]}`)
        }
        

        // 三.设置请求方式.请求地址
        xhr.open('get', `${url}?${temp.join('&')}`)
        
        // 遍历请求头
        for(let key in headers)[
            xhr.setRequestHeader(key,headers[key])
        ]
        // 四.发送请求
        xhr.send(null)
    })
    // 调用p函数,返回promise对象 里面有resolve数据和reject数据
    return p
}





/**
 * post封装
 * @param {String} url 请求地址
 * @param {Object} params 请求参数
 * @param {Object} headers 请求头
 * @param {String} dataType 获取的后端数据类型
 * @returns Promise  Promise对象中有两个数据  resolve reject
 */
function post(url, params, headers = {}, dataType) {

    return new Promise((resolve, reject) => {
        // 一.创建xhr对象
        const xhr = new XMLHttpRequest
        // 二.监控数据状态
        xhr.onreadystatechange = () => {
            // 判断是否获取后端数据
            if (xhr.readyState === 4) {
                // 判断数据状态
                if (xhr.status === 200) {
                    //获取数据
                    let res = xhr.responseText
                    // 判断数据类型
                    if (dataType === 'json') res = JSON.parse(res)
                    resolve(res)
                } else {
                    reject(xhr.status)
                }
            }
        }
        // 遍历请求参数
        let temp=[]
        for(let key in params){
            temp.push(`${key}=${params[key]}`)
        }
        
        // 三.设置请求方式.请求地址
        xhr.open('post', url)
        // post独有的请求头
        xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')

        // 遍历请求头
        for(let key in headers)[
            xhr.setRequestHeader(key,headers[key])
        ]
        // 四.发送请求
        xhr.send(temp.join('&'))
    })
}